package tests.create;

import static org.junit.Assert.*;

import java.net.UnknownHostException;

import model.Budget;
import model.BudgetFactory;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.workplicity.util.Helper;
import org.workplicity.worklet.WorkletContext;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class BudgetCreateTest01
{
	Budget budget;
	BudgetFactory factory;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception
	{
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception
	{
	}

	@Before
	public void setUp() throws Exception
	{
	}

	@After
	public void tearDown() throws Exception
	{
	}

	@Test
	public void test()
	{
		factory = new BudgetFactory();
        
        try
        {
        	for(int i = 1; i <= 10; i++){
        		//Create a budget
        		budget = (Budget) factory.create();
        		budget.setName("Test budget "+i);
           
        		budget.setDescription("This is a test budget.");
            
        		Boolean successful = budget.commit();
        		if(!successful){
        			fail("Creating Budget failed");
        		}
        		Mongo mongo = null;
          		try
          		{
          			mongo = new Mongo();
          		} catch (UnknownHostException e)
          		{
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		} catch (MongoException e)
          		{
          			// TODO Auto-generated catch block
          			e.printStackTrace();
          		}
          		
                  DB db = mongo.getDB("cc");
                  DBCollection collection = db.getCollection(budget.getRepositoryName());
                  collection.remove(new BasicDBObject("entry.id", budget.getId()));
        		//Helper.delete(budget, WorkletContext.getInstance());
        	}
        }
        catch(Exception e) {
            fail("Creating Budget failed with exception: " + e);
        }
	}

}
